package com.delos.api.converter;

import com.delos.api.bo.BaseBO;
import com.delos.api.entity.BaseDO;
import com.delos.rpc.dto.BaseDTO;
import com.delos.rpc.vo.BaseVO;

import java.util.List;

/**
 * @author zouyaowen
 * @date 2020-05-17
 */
public interface ModelConverter<D extends BaseDO, B extends BaseBO, T extends BaseDTO, V extends BaseVO> {
    /**
     * 实体类转换
     *
     * @param t
     * @return
     */
    D toDOFromDTO(T t);

    D toDOFromBO(B b);

    B toBOFromDO(D d);

    B toBOFromVO(V v);

    B toBOFromDTO(T t);

    V toVOFromDTO(T t);

    V toVOFromBO(B b);

    /**
     * @param t 列表
     * @return 列表
     */
    List<D> toDOFromDTO(List<T> t);

    List<D> toDOFromBO(List<B> b);

    List<B> toBOFromDO(List<D> d);

    List<B> toBOFromVO(List<V> v);

    List<B> toBOFromDTO(List<T> t);

    List<V> toVOFromDTO(List<T> t);

    List<V> toVOFromBO(List<B> b);
}
